const http = require('http');
const url = require('url');
const fs = require('fs');
const EventEmiter = require('events');  //拆分路由
let MIME = require('./mime.json');
const path = require('path');
let routeEvent = new EventEmiter();
// 引入route 信息
require('./routes.js')(routeEvent);   // 引入的函数，传参为routeEvent进行调用

let server = http.createServer((req,res)=>{
    let pathname = url.parse(req.url,true).pathname;
    // 设置返还头部，不能只设置一种头部，根据返还的文件设置对应的头部信息
console.log(pathname);
    if(routeEvent.listenerCount(pathname) > 0){
        routeEvent.emit(pathname,req,res);
    }
     // else if(pathname=="/mycss.css"){
    //    let data =  fs.readFileSync("./views/mycss.css");
    //    res.write(data);
    //    res.end();
    // }

    else {
        if (fs.existsSync("./static/" + pathname)) {
            // 在static 目录里查找 pathname的文件有没有，如果有，那么就加载且输出
            // 获取文件的后缀名
          let extname =   path.extname(pathname); // 获取pathname文件的后缀名称
          console.log(extname);
          res.setHeader("content-type",MIME[extname]);    // 设置对应文件的后缀名称
            let data = fs.readFileSync("./static/" + pathname)
            res.write(data);
            res.end();
        }else{
            // 404页面
            let data = fs.readFileSync("./views/404.html");
            res.write(data);
            res.end();
        }
    }
})

server.listen(8080);

/* 
静态文件的处理：引入其他的文件
    1.需要通过fs读取文件，且输出到页面
    2.根据不同的文件设置不同的返还头部 content-type，MIME标准；


*/